package grafico;

import java.io.*;
import java.awt.Color;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;

import voxToolkit.VoxFileChooser;
import voxToolkit.VoxWarning;
import voxToolkit.VoxYesNoCancel;

import main.Contexto;
import voxToolkit.*;

public class GerenteGUI 
{
	static private GerenteGUI instancia = null;
	
	private Contexto contexto;
	private WndPrincipal wndPrincipal;
	
	private GerenteGUI()
	{
		contexto = Contexto.instancia();

		wndPrincipal = new WndPrincipal( this );
		
		wndPrincipal.setLocationRelativeTo(null);
		wndPrincipal.setVisible(true);
	}
	
	static public GerenteGUI instancia()
	{
		if ( instancia == null )
			instancia = new GerenteGUI();
		
		return instancia;
	}
	
	public void dlgMostraEstrutura( String estrutura )
	{
		GeraHTML html = GeraHTML.instancia();
		DlgEstrutura dlg = new DlgEstrutura("Estrutura do Documento");
		
		dlg.getTxtPane().setText( html.geraDiv(estrutura) );
		dlg.setVisible(true);
	}
	
	public String dlgAbrirArquivoOPF(String inicial)
	{
		VoxFileChooser dlg = new VoxFileChooser("opf");
		dlg.showOpenFile();
		if (dlg.APPROVE_OPTION == 1){
			File selectedFile = dlg.getArquivoSelecionado();
			/*return contexto.caminho( selectedFile.getParent() + "\\" + 
   				    selectedFile.getName() );*/
			return contexto.caminho( selectedFile.getParent() + contexto.separador() + 
   				    selectedFile.getName() );
		}
		return null;
	}

	public void dlgAlerta( String str )
	{
		VoxWarning v = new VoxWarning(wndPrincipal, str);
	}
	
	public void dlgYesNoCancel(String str)
	{	
		VoxYesNoCancel dlgMsg = new VoxYesNoCancel(wndPrincipal, str);
	}
	
	public Color toColor( String cor )
	{
		return new Color( Integer.parseInt(cor, 16) );
	}
	
	public void exibirTexto( String str )
	{
		GeraHTML html = GeraHTML.instancia();
		
		wndPrincipal.getTxtPane().setText( html.geraDiv(str) );
		wndPrincipal.repaint();
	}

	/*
	 * Invoca a janela principal para que ela se configure para o modo contÃ­nuo
	 */
	public void setLayoutModoContinuo()
	{
		wndPrincipal.setLayoutModoContinuo();
	}

	/*
	 * Invoca a janela principal para que ela se configure para o modo parÃ¡grafo
	 */
	public void setLayoutModoParagrafo()
	{
		wndPrincipal.setLayoutModoParagrafo();
	}

	public void setLayoutModoParado()
	{
		wndPrincipal.setLayoutModoParado();
	}
}
